
#ifndef NOSAL_EXEC_INTERNAL_CONSTANT_H_
#define NOSAL_EXEC_INTERNAL_CONSTANT_H_

#include <cstdint>

namespace netaos {
namespace nosal {
namespace exec {
namespace internal {

#if 0
/**
 * @brief kExecutionClientWriteFd defines a file descriptor that is used by
 *        Execution Client for sending messages to execution-manager
 *
 * @note Implementation detail
 */
extern const int kExecutionClientWriteFd;

/**
 * @brief kStateClientRequestWriteFd defines a file descriptor that is used by
 *        State Client for sending messages to execution-manager
 *
 * @note Implementation detail
 */
extern const int kStateClientRequestWriteFd;

/**
 * @brief kStateClientResponseReadFd defines a file descriptor that is used by
 *        State Client for receiving messages from execution-manager
 *
 * @note Implementation detail
 */
extern const int kStateClientResponseReadFd;

/**
 * @brief kStateClientIpcFilesPath - defines a path to directory for files for IPC
 *        communication between StateClient and ExecutionManager. The directory is
 *        not cleared on MachineFG states transitions.
 *
 * @note Implementation detail
 */
extern const char* kStateClientIpcFilesPath;

/**
 * @brief kExecutionClientReadFd defines a file descriptor that is used by
 *        Execution Client for receiving messages from execution-manager
 *
 * @note Implementation detail
 */
extern const int kExecutionClientReadFd;
#endif

extern const char* kMachineFunctionGroupName;

/// @brief State Management name for FunctionClusterAffiliation property.
extern const char* kStateManagementFunctionClusterAffiliation;

/// @brief Off state name for FunctionGroups
extern const char* kStateOff;

/// @brief File path to UCM's PROCESSES.json file.s
extern const char* ucmProcessesFilePath;

enum StateClientOperation : std::uint8_t
{
    kSetStateRequest = 1U,
    kSetStateResponse = 2U,
    kGetExecutionErrorRequest = 3U,
    kGetExecutionErrorResponse = 4U,
    kUpdateStateNotification = 5U,
    kRegisterForNotification = 6U,
    kUnregisterFromNotification = 7U,
    kUnknownResponse = 8U,
    kGetInitialMachineStateTransitionRequest = 9U,
    kGetInitialMachineStateTransitionResponse = 10U
};

enum ExecutionClientOperation : std::uint8_t
{
    kReportExecutionState = 1U,
    kReportExecutionStateReponse = 2U
};

constexpr int kInvalidFileDescriptor = -1;

}  // namespace internal
}  // namespace exec
}  // namespace nosal
}  // namespace netaos

#endif  // NOSAL_EXEC_INTERNAL_CONSTANT_H_
